#ifndef AER_DISPLAY_HPP_
#define AER_DISPLAY_HPP_

#include "../aerDefs.hpp"

namespace aer {

/// ========================================
/// + Describes generic display attributes +
/// ========================================
struct Display
{
  U32 width;
  U32 height;
  U32 depthBits;
  U32 stencilBits;
  
  // OpenGL version
  U16 majorVersion;
  U16 minorVersion;
  
  bool bFullscreen;
  bool bResizable;
  bool bBorder;
  bool bClose;
  
  Display( const U32   width, 
            const U32   height, 
            const U32   depthBits    = 24u, 
            const U32   stencilBits  = 0u,
            const U16   majorVersion = 3,
            const U16   minorVersion = 3,
            const bool  bFullscreen  = false, 
            const bool  bResizable   = false, 
            const bool  bBorder      = true, 
            const bool  bClose       = true)
    : width(width), 
      height(height), 
      depthBits(depthBits), 
      stencilBits(stencilBits),
      majorVersion(majorVersion),
      minorVersion(minorVersion),
      bFullscreen(bFullscreen), 
      bResizable(bResizable), 
      bBorder(bBorder), 
      bClose(bClose)
  {}
  
  float getAspectRatio() const { 
    return static_cast<float>(width) / static_cast<float>(height); 
  }
};
 
} // aer

#endif // AER_DISPLAY_HPP_
